
package proxy.statical.perfect;

import common.HelloException;
import common.HelloInterface;
import common.HelloSpeaker;

/**
 * 和 package imperfect 比起來的優點是，將邏輯和log 分開, 邏輯部份就專心在 HelloSpeaker 中選寫, HelloSpeaker class 不要有 log 的程式碼
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class HelloPerfectTester
{
	public HelloPerfectTester() throws HelloException
	{
		// 建構代理物件時必須給它一個被代理物作
		HelloInterface hello = new HelloProxy( new HelloSpeaker() );

		// 取回的代理物件時, 必須轉換操作介面 HelloInterface
		hello.sayHello( "eric.kao" );
	}

	/**
	 * @param args
	 */
	public static void main( String[] args )
	{
		try
		{
			new HelloPerfectTester();
		}
		catch( HelloException e )
		{
			e.printStackTrace();
		}
	}

}
